package day08;

/**
 * @author aiPlusPlus
 * @version 1.0
 * @date 2023/1/8 18:53
 */

import java.util.HashSet;
import java.util.Set;

/**
 * 我们把只包含质因子 2、3 和 5 的数称作丑数（Ugly Number）。求按从小到大的顺序的第 n 个丑数。
 *
 */
public class Solution4 {
    public int nthUglyNumber(int n) {
        int []dp = new int[n+1];
        dp[1] = 1;
        int p2 = 1,p3=1,p5 = 1;
        for (int i = 2; i < n + 1; i++) {
            int nums1 = dp[p2]*2,nums2 = dp[p3]*3,nums3 = dp[p5]*5;
            dp[i] = Math.min(Math.min(nums1,nums2),nums3);
            if(dp[i]==nums1){
                p2++;
            }
            if(dp[i]==nums2){
                p3++;
            }
            if(dp[i]==nums3){
                p5++;
            }
        }
        return dp[n];
    }
}
